const path = require('path');
const mime = require('mime');
const fs = require('mz/fs');
//处理css,js,fonts等请求
function staticFiles(url, dir)  //url为前缀 dir为目录
/**
 * 判断当前的URL是否以指定前缀开头，
 * 如果是，就把URL的路径视为文件，并发送文件内容。
 * 如果不是，这个async函数就不做任何事情，而是简单地调用await next()让下一个middleware去处理请求。
 */
{
    return async (ctx, next) => 
    {
        let rpath = ctx.request.path;
        if (rpath.startsWith(url)) 
        {
            let fp = path.join(dir, rpath.substring(url.length));
            if (await fs.exists(fp)) 
            {
                ctx.response.type = mime.lookup(rpath);
                ctx.response.body = await fs.readFile(fp);
            } 
            else
            {
                ctx.response.status = 404;
            }
        } 
        else 
        {
            await next();
        }
    };
}

module.exports = staticFiles;